#devtools::install_github("king4k1/seoulsubway") library(seoulsubway) library(data.table) data("subway_data_DT") data("subway_data") #save(file="D:/seoulsubway/subway_data.RData", subway_data) #save(file="D:/seoulsubway/subway_data_DT.RData", subway_data_DT) #save(file="D:/seoulsubway/seoul_station.RData", seoul_station)
transaction_data <- fread(file=file.choose(), encoding = "UTF-8") # choose transaction data seoul_route <- transaction_data%>%select(승차역명, 승차호선명) seoul_route <- unique(seoul_route) ind1 <- str_locate(seoul_route$승차역명, "[(]") ind <- ind1[-which(is.na(ind1[,1])),1] ind2 <- which(is.na(ind1[,1])==TRUE) seoul_route$승차역명[-ind2] <- str_sub(seoul_route$승차역명[-ind2], 1, ind-1) seoul_route$승차역명 <- str_replace(seoul_route$승차역명, "서울역", "서울") seoul_route$승차역명 <- str_replace(seoul_route$승차역명, "이수", "총신대입구") seoul_route$승차호선명 <- str_sub(seoul_route$승차호선명, 1, 1) colnames(seoul_route) <- c("Name", "Line") ind_2_A <- which(seoul_route$Name %in% c("용답","신답","용두","신설동")) ind_2_B <- which(seoul_route$Name %in% c("도림천","양천구청","신정네거리")) ind_5_A <- which(seoul_route$Name %in% c("둔촌동","올림픽공원","방이", "오금","개롱","거여","마천")) ind_6_A <- which(seoul_route$Name %in% c("역촌","독바위","구산")) seoul_route[ind_2_A,]$Line <- "2-A" seoul_route[ind_2_B,]$Line <- "2-B" seoul_route[ind_5_A,]$Line <- "5-A" seoul_route[ind_6_A,]$Line <- "6-A" seoul_route[seoul_route$Name=="신설동"][1]$Line <- "1" # 신설동역 2가지 호선에 대하여 하나는 1호선으로 표기 필요 head(seoul_route) seoul_route[which(seoul_route$Name%in%c("불광","연신내")),][c(2,4),"Line"] <- "6-A" seoul_route[which(seoul_route$Name%in%c("오금")),"Line"] <- c("3", "5-A") seoul_route[which(seoul_route$Name%in%c("강남")),"Line"] seoul_station <- subway_data_DT$Name seoul_station <- sort(unique(seoul_station)) subway_make_list <- data.frame(matrix(0,1,468)) colnames(subway_make_list) <- seoul_station head(subway_make_list)
depart <- seoul_route[1,]$Name ; depart_line <- seoul_route[1,]$Line arrival <- seoul_route[2,]$Name ; arrival_line <- seoul_route[2,]$Line get_path<- function(depart, depart_line, arrival, arrival_line){ result <- shortestpath(depart, depart_line, arrival, arrival_line) if(result$Time==300){ Path <- "no result" ind <- 0 result$Info <- data.frame(matrix(0,5,5)) } if(result$Time!=300 & nrow(result$Info)==1){ Path <- result$Path Path <- Path$Name } if(result$Time!=300 & nrow(result$Info)==2){ Path <- rbind(result$Path1, result$Path2) Path <- Path[-which(duplicated(Path$Name)),]$Name } if(result$Time!=300 & nrow(result$Info)==3){ Path <- rbind(result$Path1, result$Path2, result$Path3) Path <- Path[-which(duplicated(Path$Name)),]$Name } if(result$Time!=300 & nrow(result$Info)==4){ Path <- rbind(result$Path1, result$Path2, result$Path3, result$Path4) Path <- Path[-which(duplicated(Path$Name)),]$Name } return(data.frame(station=Path)) } result <- get_path(depart="봉화산", depart_line="6", arrival="강동", arrival_line="5-A") change_ds_sna <- function(input){ n <- nrow(input) if(n!=1){ dat <- data.frame(matrix(0,n-1,2)) colnames(dat) <- c("from","to") for(i in 1:(n-1)){ dat[i,] <- c(as.character(input$station[i]), as.character(input$station[i+1])) } } if(n==1){ dat <- data.frame("from"=input$station, "to"=input$station) } return(dat) } change_ds_sna(result)
seoul_route <- seoul_route%>%arrange(Name) subway_route2 <- list() for(i in 1:277){ for(j in i:277){ subway_route2[[paste0(seoul_route[i,]$Name,"(",seoul_route[i,]$Line,")", "-",seoul_route[j,]$Name,"(",seoul_route[j,]$Line,")")]] <- tryCatch(get_path(depart=seoul_route[i,]$Name, depart_line=seoul_route[i,]$Line, arrival=seoul_route[j,]$Name, arrival_line=seoul_route[j,]$Line), error = function(e) {c("no result",0) }) } if(i %in% c(10*(1:25),277)){ #save(file="D:/subway_analysis/data/subway_route2.RData",subway_route2, seoul_route) save(file="/home/students/kson/subway_route2.Rdata", subway_route2) } } get_path(depart=seoul_route[i,]$Name, depart_line=seoul_route[i,]$Line, arrival=seoul_route[j,]$Name, arrival_line=seoul_route[j,]$Line)
find_null <- rep(0,38226) null_set <- c() for(i in 1:38226){ if(is.null(nrow(subway_route2[[i]]))==TRUE){ null_set[i] <- (i) }else{ find_null[i] <- nrow(subway_route2[[i]]) } } k <- which(is.na(null_set)==FALSE) null_route_name <-names(subway_route2)[k] null_route <- as.data.frame(null_route_name) null_route <- tidyr::separate(null_route, null_route_name, c("depart","depart_line","arrival", "arrival_line"), sep="[(a)]") null_route$arrival <- str_remove(null_route$arrival, "-") ind<- which(null_route$arrival%in%c("마곡", "김포공항","송정","방화")) ind2<- which(null_route$arrival%in%c("도림천","신정네거리","양천구청")) ind3 <- which(null_route$depart%in%c("불광","연신내","응암")) ind4 <- which(null_route$depart%in%c("녹번","지축")) ind5 <- which(null_route$arrival%in%c("지축")) ind6 <- which(null_route$depart%in%c("양평")) get_path("구파발","3", "신도림","2") rbind(get_path("부천시청","7", "영등포구청","5"), get_path("양평", "5","송정","5")) for(i in ind2){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],arrival="응암",arrival_line="6"), get_path( depart = "새절", depart_line="6", arrival=null_route$arrival[i], arrival_line =null_route$arrival_line[i])) } for(i in ind5){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],"구파발","3"),data.frame(station="지축",ind="57")) } for(i in ind6){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],"영등포구청","5"),get_path(depart = "양평", depart_line = "5", arrival=null_route$arrival[i], arrival_line =null_route$arrival_line[i])) } for(i in ind){ subway_route2[[null_route_name[i]]] <- get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i], arrival=null_route$arrival[i], arrival_line =null_route$arrival_line[i]) } for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i], arrival="영등포구청", arrival_line ="5"), get_path("양평", "5",null_route$arrival[i],"5")) } for(i in ind2){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i], arrival="신도림", arrival_line ="2"), get_path("도림천", "2-B",null_route$arrival[i],"2-B")) } subway_route <- subway_route2 #save(file="C:/Users/82104/Desktop/subway_route.RData",subway_route2) #save(file="C:/Users/82104/Desktop/seoul_route.RData", seoul_route) for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i], arrival="영등포구청", arrival_line ="5"), get_path("양평", "5",null_route$arrival[i],"5")) } for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],"구파발","3"),data.frame(station="지축",ind="412")) } rbind(get_path(depart="응암", "6-A", "구파발","3"), data.frame(station="지축",ind="412")) for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path("양평", "5","영등포구청", "5"), get_path("영등포구청", "5",null_route$arrival[i],null_route$arrival_line[i])) } for(i in ind3){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],"구파발","3"),data.frame(Path="지축",ind="412")) } for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],"연신내","3"),get_path(depart = "응암", depart_line = "6",null_route$arrival[i],null_route$arrival_line[i])) } which(seoul_station%in%"지축") which(seoul_station%in%"양평") for(i in ind){ subway_route2[[null_route_name[i]]] <- rbind(get_path(depart = null_route$depart[i], depart_line = null_route$depart_line[i],arrival="응암",arrival_line="6"), get_path( depart = "새절", depart_line="6", arrival=null_route$arrival[i], arrival_line =null_route$arrival_line[i])) } for(i in 1:38226){ colnames(subway_route2[[i]]) <- c("station", "ind") }
data("subway_sample") dat <- subway_sample get_total_count <- function(dat, depart_name, depart_line_name, arrival_name, arrival_line_name){ data("subway_data_DT") seoul_station <- subway_data_DT$Name seoul_station <- sort(unique(seoul_station)) subway_make_list <- data.frame(matrix(0,1,460)) colnames(subway_make_list) <- seoul_station depart <- dat[,depart_name] depart_line <- dat[,depart_line_name] arrival <- dat[,arrival_name] arrival_line <- dat[,arrival_line_name] for(i in 1:nrow(dat)){ get <- paste0(depart[i], "(", depart_line[i], ")", "-", arrival[i], "(", arrival_line[i], ")") get_2 <- paste0(arrival[i], "(", arrival_line[i], ")", "-", depart[i], "(", depart_line[i], ")") result <- subway_route[[get]] if(is.null(result)){ result <- subway_route[[get_2]] } subway_make_list[result$ind] <- subway_make_list[result$ind] + 1 } return(subway_make_list) } get_total_count(dat=dat, depart_name = "up_Name", depart_line_name = "up_Line", arrival_name = "down_Name", arrival_line_name = "down_Line") data(subway_route) data("seoul_route") ind <- which(seoul_route$Line=="6-A") which(seoul_route$Name=="새절") subway_route2 <- list() data("seoul_station") i <- 14;j<-135 for(i in 1:277){ for(j in i:277){ subway_route2[[paste0(seoul_route[i,]$Name,"(",seoul_route[i,]$Line,")", "-",seoul_route[j,]$Name,"(",seoul_route[j,]$Line,")")]] <- get_path(depart=seoul_route[i,]$Name, depart_line=seoul_route[i,]$Line, arrival=seoul_route[j,]$Name, arrival_line=seoul_route[j,]$Line) } if(i %in% c(10*(1:25),277)){ save(file="D:/subway_route2.RData",subway_route2) } } for(i in 1:9621){ subway_route_sna[[ind[i]]] <- NULL }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.